/**
 * 导航工具函数
 * 提供安全的页面跳转和返回方法
 */

/**
 * 安全的返回方法
 * @param {Object} options 返回选项
 * @param {number} options.delta 返回的页面数，默认为1
 * @param {string} options.fallbackUrl 无法返回时的跳转地址，默认为首页
 */
export const safeNavigateBack = (options = {}) => {
  const { delta = 1, fallbackUrl = '/pages/leagueMatchesHome/index' } = options;
  
  // 获取当前页面栈
  const pages = getCurrentPages();
  
  // 如果页面栈长度大于delta，说明可以返回
  if (pages.length > delta) {
    uni.navigateBack({
      delta: delta
    });
  } else {
    // 如果无法返回，执行fallback操作
    console.log('无法返回，执行fallback操作');
    
    if (fallbackUrl.includes('leagueMatchesHome') || fallbackUrl.includes('mine')) {
      // 如果是tabbar页面，使用switchTab
      uni.switchTab({
        url: fallbackUrl
      });
    } else {
      // 如果是普通页面，使用navigateTo
      uni.navigateTo({
        url: fallbackUrl
      });
    }
  }
};

/**
 * 安全的页面跳转方法
 * @param {string} url 跳转地址
 * @param {string} type 跳转类型：'navigateTo' | 'switchTab' | 'redirectTo' | 'reLaunch'
 */
export const safeNavigateTo = (url, type = 'navigateTo') => {
  try {
    switch (type) {
      case 'navigateTo':
        uni.navigateTo({ url });
        break;
      case 'switchTab':
        uni.switchTab({ url });
        break;
      case 'redirectTo':
        uni.redirectTo({ url });
        break;
      case 'reLaunch':
        uni.reLaunch({ url });
        break;
      default:
        uni.navigateTo({ url });
    }
  } catch (error) {
    console.error('页面跳转失败:', error);
    uni.showToast({
      title: '页面跳转失败',
      icon: 'none'
    });
  }
};

/**
 * 智能页面跳转方法
 * 根据页面路径自动选择合适的跳转方式
 * @param {string} url 跳转地址
 */
export const smartNavigateTo = (url) => {
  // 判断是否为tabbar页面
  const tabbarPages = [
    '/pages/leagueMatchesHome/index',
    '/pages/mine/index'
  ];
  
  if (tabbarPages.includes(url)) {
    uni.switchTab({ url });
  } else {
    uni.navigateTo({ url });
  }
};

/**
 * 检查当前页面是否可以返回
 * @returns {boolean} 是否可以返回
 */
export const canNavigateBack = () => {
  const pages = getCurrentPages();
  return pages.length > 1;
};

/**
 * 获取当前页面路径
 * @returns {string} 当前页面路径
 */
export const getCurrentPagePath = () => {
  const pages = getCurrentPages();
  if (pages.length > 0) {
    return pages[pages.length - 1].route;
  }
  return '';
};

/**
 * 检查当前页面是否为tabbar页面
 * @returns {boolean} 是否为tabbar页面
 */
export const isTabbarPage = () => {
  const currentPath = getCurrentPagePath();
  const tabbarPages = [
    'pages/leagueMatchesHome/index',
    'pages/mine/index'
  ];
  return tabbarPages.includes(currentPath);
}; 